const axios = require('axios');

// 测试通过队列服务执行PLC读取任务
async function testPLCReadTask() {
    try {
        console.log('测试通过队列服务执行PLC读取任务...');
        
        // 构造PLC读取任务
        const task = {
            task: {
                type: 'plc-read',
                variables: ['DB1,W2', 'DB2,X0.0', 'DB1,DW8']
            }
        };
        
        // 发送到队列服务
        const response = await axios.post('http://localhost:3003/api/queue/task', task);
        console.log('PLC读取任务提交成功:', response.data);
        return response.data;
    } catch (error) {
        console.error('PLC读取任务测试失败:', error.message);
        throw error;
    }
}

// 测试通过队列服务执行PLC写入任务
async function testPLCWriteTask() {
    try {
        console.log('测试通过队列服务执行PLC写入任务...');
        
        // 构造PLC写入任务
        const task = {
            task: {
                type: 'plc-write',
                variable: 'DB1,DW8',
                value: 1
            }
        };
        
        // 发送到队列服务
        const response = await axios.post('http://localhost:3003/api/queue/task', task);
        console.log('PLC写入任务提交成功:', response.data);
        return response.data;
    } catch (error) {
        console.error('PLC写入任务测试失败:', error.message);
        throw error;
    }
}

// 运行测试
async function runTests() {
    try {
        console.log('开始PLC队列任务测试...\n');
        
        // 测试PLC读取任务
        await testPLCReadTask();
        console.log('\n-------------------\n');
        
        // 测试PLC写入任务
        await testPLCWriteTask();
        console.log('\n-------------------\n');
        
        console.log('所有PLC队列任务测试完成!');
    } catch (error) {
        console.error('测试过程中出现错误:', error.message);
    }
}

// 如果直接运行此脚本，则执行测试
if (require.main === module) {
    runTests();
}

module.exports = {
    testPLCReadTask,
    testPLCWriteTask
};